const api = require('../../utils/api')
const app = getApp()

Page({
  data: {
    email: '',
    password: '',
    showPassword: false,
    isLoading: false,
    wechatLoading: false,
    showAgreement: false
  },

  onLoad(options) {
    // 检查是否已登录
    const userInfo = wx.getStorageSync('userInfo')
    if (userInfo) {
      wx.switchTab({
        url: '/pages/index/index'
      })
    }
  },

  // 返回上一页
  goBack() {
    const pages = getCurrentPages()
    if (pages.length > 1) {
      wx.navigateBack()
    } else {
      wx.switchTab({
        url: '/pages/index/index'
      })
    }
  },

  // 邮箱输入
  onEmailInput(e) {
    this.setData({
      email: e.detail.value
    })
  },

  // 密码输入
  onPasswordInput(e) {
    this.setData({
      password: e.detail.value
    })
  },

  // 清除邮箱
  clearEmail() {
    this.setData({
      email: ''
    })
  },

  // 切换密码显示
  togglePassword() {
    this.setData({
      showPassword: !this.data.showPassword
    })
  },

  // 登录
  async onLogin() {
    const { email, password } = this.data

    // 表单验证
    if (!email) {
      wx.showToast({
        title: '请输入邮箱',
        icon: 'none'
      })
      return
    }

    if (!password) {
      wx.showToast({
        title: '请输入密码',
        icon: 'none'
      })
      return
    }

    // 邮箱格式验证
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
    if (!emailRegex.test(email)) {
      wx.showToast({
        title: '邮箱格式不正确',
        icon: 'none'
      })
      return
    }

    // 密码长度验证
    if (password.length < 6) {
      wx.showToast({
        title: '密码长度至少6位',
        icon: 'none'
      })
      return
    }

    this.setData({ isLoading: true })

    try {
      // 调用真实登录API
      const result = await api.login({ email, password })
      
      // 修复：检查code=200表示成功，而不是success字段
      if (result.code === 200) {
        const { user, token } = result.data
        
        // 保存用户信息到全局数据
        app.setUserInfo(user, token)

        wx.showToast({
          title: '登录成功',
          icon: 'success'
        })

        // 跳转到首页
        setTimeout(() => {
          wx.switchTab({
            url: '/pages/index/index'
          })
        }, 1500)
        
      } else {
        throw new Error(result.message || '登录失败')
      }

    } catch (error) {
      console.error('登录失败:', error)
      
      // 如果API失败，使用模拟登录作为降级方案
      if (error.message && error.message.includes('网络')) {
        await this.mockLogin()
      } else {
        wx.showToast({
          title: error.message || '登录失败，请重试',
          icon: 'none'
        })
      }
    } finally {
      this.setData({ isLoading: false })
    }
  },

  // 模拟登录（API失败时的降级方案）
  async mockLogin() {
    const { email } = this.data
    
    const mockUser = {
      id: 1,
      nickname: '美食爱好者',
      email: email,
      phone: '138****8888',
      avatarUrl: 'https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?w=200&h=200&fit=crop&crop=face'
    }

    const mockToken = 'mock_token_' + Date.now()

    // 保存用户信息
    app.setUserInfo(mockUser, mockToken)

    wx.showToast({
      title: '登录成功（模拟）',
      icon: 'success'
    })

    setTimeout(() => {
      wx.switchTab({
        url: '/pages/index/index'
      })
    }, 1500)
  },

  // 微信登录
  async onWechatLogin() {
    this.setData({ wechatLoading: true })

    try {
      // 1. 获取微信登录code
      const loginRes = await this.getWechatLoginCode()
      
      if (!loginRes.code) {
        throw new Error('获取微信授权失败')
      }

      // 2. 获取用户信息
      const userInfo = await this.getWechatUserInfo()

      // 3. 调用后端微信登录接口
      const result = await api.wxLogin({
        code: loginRes.code,
        nickname: userInfo.nickName,
        avatar: userInfo.avatarUrl
      })

      // 修复：检查code=200表示成功，而不是success字段
      if (result.code === 200) {
        const { user, token } = result.data
        
        // 保存用户信息
        app.setUserInfo(user, token)

        wx.showToast({
          title: '微信登录成功',
          icon: 'success'
        })

        setTimeout(() => {
          wx.switchTab({
            url: '/pages/index/index'
          })
        }, 1500)
        
      } else {
        throw new Error(result.message || '微信登录失败')
      }

    } catch (error) {
      console.error('微信登录失败:', error)
      
      // 如果API失败，使用模拟登录
      if (error.message && error.message.includes('网络')) {
        await this.mockWechatLogin()
      } else {
        wx.showToast({
          title: error.message || '微信登录失败',
          icon: 'none'
        })
      }
    } finally {
      this.setData({ wechatLoading: false })
    }
  },

  // 获取微信登录code
  getWechatLoginCode() {
    return new Promise((resolve, reject) => {
      wx.login({
        success: resolve,
        fail: reject
      })
    })
  },

  // 获取微信用户信息
  getWechatUserInfo() {
    return new Promise((resolve, reject) => {
      wx.getUserProfile({
        desc: '用于完善用户资料',
        success: (res) => {
          resolve(res.userInfo)
        },
        fail: (error) => {
          // 如果用户拒绝授权，使用默认信息
          resolve({
            nickName: '微信用户',
            avatarUrl: 'https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?w=200&h=200&fit=crop&crop=face'
          })
        }
      })
    })
  },

  // 模拟微信登录
  async mockWechatLogin() {
    const mockUser = {
      id: 2,
      nickname: '微信用户',
      email: '',
      phone: '139****9999',
      avatarUrl: 'https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?w=200&h=200&fit=crop&crop=face',
      openid: 'mock_openid_' + Date.now()
    }

    const mockToken = 'wechat_token_' + Date.now()

    // 保存用户信息
    app.setUserInfo(mockUser, mockToken)

    wx.showToast({
      title: '微信登录成功（模拟）',
      icon: 'success'
    })

    setTimeout(() => {
      wx.switchTab({
        url: '/pages/index/index'
      })
    }, 1500)
  },

  // 手机号登录
  onPhoneLogin() {
    wx.showToast({
      title: '手机号登录功能开发中',
      icon: 'none'
    })
  },

  // QQ登录
  onQQLogin() {
    wx.showToast({
      title: 'QQ登录功能开发中',
      icon: 'none'
    })
  },

  // 微博登录
  onWeiboLogin() {
    wx.showToast({
      title: '微博登录功能开发中',
      icon: 'none'
    })
  },

  // 跳转注册
  goToRegister() {
    wx.navigateTo({
      url: '/pages/register/register'
    })
  },

  // 忘记密码
  onForgotPassword() {
    wx.showModal({
      title: '忘记密码',
      content: '请联系客服找回密码\n客服电话：400-123-4567\n客服微信：meituan_service',
      showCancel: false,
      confirmText: '知道了'
    })
  },

  // 显示用户协议
  showUserAgreement() {
    this.setData({
      showAgreement: true
    })
  },

  // 显示隐私政策
  showPrivacyPolicy() {
    wx.showModal({
      title: '隐私政策',
      content: '我们重视您的隐私保护，详细的隐私政策请访问官网查看。',
      showCancel: false,
      confirmText: '知道了'
    })
  },

  // 隐藏协议弹窗
  hideAgreement() {
    this.setData({
      showAgreement: false
    })
  },

  // 阻止事件冒泡
  stopPropagation() {
    // 空方法，用于阻止事件冒泡
  }
}) 